import java.util.HashSet;

class Solution {
    public static void main(String[] args) {
        String str = "au";
        System.out.println(lengthOfLongestSubstring(str));
    }
//    public static int lengthOfLongestSubstring(String s) {
//          int len = s.length() ;
//          int count = 0 ;
//          HashSet<Character> set = new HashSet<>() ;
//          for(int i = 0,j=0 ; j < len && i < len; ){
//              if(i == j){
//                set.add(s.charAt(i));
//                j ++ ;
//                count = Math.max(count , 1);
//              }else{
//                if(set.contains(s.charAt(j)) == false){
//                  set.add(s.charAt(j));
//                  j ++ ;
//                 count =  Math.max(count ,j-i);
//                }else{
//                 count = Math.max(count , j-i);
//                 char ch = s.charAt(j);
//                 while(s.charAt(i) != ch){
//                    set.remove(s.charAt(i));
//                    i ++ ;
//                 }
//                 set.remove(s.charAt(i));
//                  i ++ ;
//                }
//              }
//          }
//         return count ;
//    }
public static int lengthOfLongestSubstring(String s) {
    int len = s.length() ;
    char[] nums = s.toCharArray() ;
    char[] set = new char[128];  // 哈希表
    int sum = 0 ;            //记录子串长度
    for(int i = 0 ,j=0 ; j < len ; j ++ ){
        //进窗口
        set[nums[j]] ++ ; //让字符进入哈希表里面
        //判断条件
        while(set[nums[j]] > 1){ //有重复字符,那么哈希表里值>1
            //出窗口
            set[nums[i++]]--; //把i下标的都出窗口,直到出到哪个重复的字符的下一个位置 ;
        }
        // 更新结果
        sum = Math.max(sum , j-i+1); // 更新最大长度
    }
    return sum ;
}
}